﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace LI4.Data
{
    class Estatistica
    {
        private Ligacao ligacao;

        public Estatistica()
        {
            ligacao = new Ligacao();
        }


        public SortedDictionary<string, int> getAnunciosDistrito()
        {
            SortedDictionary<string, int> anuncios = new SortedDictionary<string, int>();
            SqlDataReader reader;

            ligacao.Select("SELECT Distritos.Nome as distrito,ISNULL(nranuncios,0) as nranuncios FROM distritos left join (Select localidades.cod_distrito,count(*) as nranuncios from anuncios,localidades where anuncios.cod_localidade=localidades.cod_localidade group by localidades.cod_distrito) as loc on Distritos.cod_distrito=loc.cod_distrito");
            reader = ligacao.mySqlDataReader;

            while (reader.Read())
            {
                anuncios.Add(reader["distrito"].ToString(), (int)reader["nranuncios"]);
            }
            reader.Close();
            return anuncios;
        }

        public SortedDictionary<string, int> getCursosDistrito()
        {
            SortedDictionary<string, int> cursos = new SortedDictionary<string, int>();
            SqlDataReader reader;

            ligacao.Select("SELECT Distritos.Nome as distrito,ISNULL(nrcursos,0) as nrcursos FROM distritos left join (Select localidades.cod_distrito,count(*) as nrcursos from cursos,localidades where cursos.cod_localidade=localidades.cod_localidade group by localidades.cod_distrito) as loc on Distritos.cod_distrito=loc.cod_distrito");
            reader = ligacao.mySqlDataReader;

            while (reader.Read())
            {
                cursos.Add(reader["distrito"].ToString(), (int)reader["nrcursos"]);
            }
            reader.Close();
            return cursos;
        }

        public SortedDictionary<string, int> getCandidatosEmpresas()
        {
            SortedDictionary<string, int> map = new SortedDictionary<string, int>();
            SqlDataReader reader;

            ligacao.Select("select count(*) as nrcandactivos from candidatos where situacao="+Business.Login.ACTIVO);
            reader = ligacao.mySqlDataReader;

            while (reader.Read())
            {
                map.Add("Candidatos Activos", (int)reader["nrcandactivos"]);
            }
            reader.Close();

            ligacao.Select("select count(*) as nrempresas from empresas");
            reader = ligacao.mySqlDataReader;

            while (reader.Read())
            {
                map.Add("Empresas", (int)reader["nrempresas"]);
            }
            reader.Close();

            ligacao.Select("select count(candidatos.situacao) as nrcandinact from candidatos where candidatos.situacao="+Business.Login.INACTIVO);
            reader = ligacao.mySqlDataReader;

            while (reader.Read())
            {
                map.Add("Candidatos Empregados", (int)reader["nrcandinact"]);
            }
            reader.Close();


            return map;
        }
        
    }
}
